# # clear_supervisors.py - 用于清空 Supervisor 表中所有数据的脚本

# # 1. 从您的主应用和模型文件中导入必要的对象
# from app import app
# from models import db, Supervisor

# print("--- 开始执行 Supervisor 表清理脚本 ---")

# # --- 安全确认步骤 ---
# # 强制用户输入 'yes' 来确认操作，防止误执行
# confirm = input("警告：此操作将删除 Supervisor 表中的所有数据，且无法恢复。您确定要继续吗？(请输入 'yes' 进行确认): ")

# if confirm.lower() != 'yes':
#     print("操作已取消。")
#     # exit() 函数会立即终止脚本执行
#     exit()
# # --- 安全确认结束 ---


# # 2. 手动创建应用上下文，以便访问数据库
# with app.app_context():
#     try:
#         print("已进入应用上下文，准备清空数据...")
        
#         # 3. 高效地删除表中的所有记录，并返回被删除的行数
#         num_rows_deleted = db.session.query(Supervisor).delete()
        
#         # 4. 提交事务，使删除操作永久生效
#         db.session.commit()
        
#         print(f"\n✅ 操作成功：共 {num_rows_deleted} 条 Supervisor 记录已被删除。")

#     except Exception as e:
#         print(f"\n❌ 操作失败: {e}")
#         # 如果发生错误，回滚事务以保持数据库状态一致
#         db.session.rollback()

# print("--- 脚本执行完毕 ---")
# delete_by_student_id.py
# 作用：根据指定的学号，删除所有相关的申请记录。

import sys
from app import app
from models import db, Application

# 检查命令行是否提供了学号参数
if len(sys.argv) < 2:
    print("\n错误：请提供一个学号作为参数。")
    print("用法: python delete_by_student_id.py <要删除的学号>\n")
    sys.exit(1) # 退出脚本

# 从命令行获取第一个参数作为目标学号
target_student_id = sys.argv[1]

print("--- 开始执行删除脚本 ---")
print(f"目标学号: {target_student_id}")

# 使用 'with app.app_context():' 来创建一个应用上下文，以便操作数据库
with app.app_context():
    
    print("已进入应用上下文，准备查询数据库...")
    
    # 查询所有学号匹配的申请记录
    applications_to_delete = Application.query.filter_by(student_id=target_student_id).all()

    # 检查是否找到了记录
    if applications_to_delete:
        count = len(applications_to_delete)
        print(f"找到了 {count} 条匹配的申请记录，准备删除...")
        
        # 遍历并删除每一条找到的记录
        for app in applications_to_delete:
            print(f"  - 正在删除 ID: {app.id}, 姓名: {app.name}, 用户名: {app.username}, 学号: {app.student_id}")
            db.session.delete(app)
        
        # 提交事务，将删除操作永久保存到数据库
        db.session.commit()
        
        print(f"\n所有 {count} 条与学号 '{target_student_id}' 相关的记录已成功删除。")
    else:
        print(f"未找到任何与学号 '{target_student_id}' 相关的申请记录，无需操作。")

print("--- 脚本执行完毕 ---")